package controllers

import (
	beego "github.com/beego/beego/v2/server/web"
	"news-mng/models"
)

type NewsController struct {
	beego.Controller
}
type Res struct {
	Code int         `json:"code"`
	Msg  string      `json:"msg"`
	Data interface{} `json:"data"`
}

func (n *NewsController) Add() {

	title := n.GetString("title")
	time := n.GetString("time")
	status := n.GetString("status")
	news := models.News{
		Title:  title,
		Time:   time,
		Status: status,
	}
	err := models.DB.Create(&news).Error
	if err != nil {
		n.Data["json"] = Res{
			Code: 0,
			Msg:  "添加失败",
		}
		n.ServeJSON()
		return
	} else {
		n.Data["json"] = Res{
			Code: 200,
			Msg:  "添加成功",
		}
		n.ServeJSON()
	}
}
func (n *NewsController) List() {

	page, _ := n.GetInt("page", 1)
	size, _ := n.GetInt("size", 3)
	offset := (page - 1) * size
	query := models.DB.Model(&models.News{})
	var count int64
	query.Count(&count)
	var news []models.News
	err := query.Offset(offset).Limit(size).Find(&news).Error
	if err != nil {
		n.Data["json"] = Res{
			Code: 0,
			Msg:  "查询失败",
		}
		n.ServeJSON()
		return
	} else {
		pageData := make(map[string]interface{})
		pageData["count"] = count
		pageData["news"] = news

		n.Data["json"] = Res{
			Code: 200,
			Msg:  "查询成功",
			Data: pageData,
		}
		n.ServeJSON()
	}
}
func (n *NewsController) Update() {
	id, _ := n.GetInt("id")
	title := n.GetString("title")
	time := n.GetString("time")
	status := n.GetString("status")
	news := models.News{
		Title:  title,
		Time:   time,
		Status: status,
	}
	err := models.DB.Where("id=?", id).Updates(&news).Error
	if err != nil {
		n.Data["json"] = Res{
			Code: 0,
			Msg:  "修改失败",
		}
		n.ServeJSON()
		return
	} else {
		n.Data["json"] = Res{
			Code: 200,
			Msg:  "修改成功",
		}
		n.ServeJSON()
	}

}
func (n *NewsController) Del() {

	id, _ := n.GetInt("id")
	err := models.DB.Delete(&models.News{}, id).Error
	if err != nil {
		n.Data["json"] = Res{
			Code: 0,
			Msg:  "删除失败",
		}
		n.ServeJSON()
		return
	} else {
		n.Data["json"] = Res{
			Code: 200,
			Msg:  "删除成功",
		}
		n.ServeJSON()
	}
}
